<?php defined('BASEPATH') OR exit('No direct script access allowed');

class Vpm_Funcionalidade_Model extends CI_Model {

	public function __construct()
	{
		parent::__construct();
	}
	
	public function inserir($data){
	
		$retorno = $this->db->insert('tb_vpmfuncionalidade', $data);
		
		if(!$retorno){
			throw new Exception('Ocorreu um erro ao inserir o Vinculo com a Funcionalidade. Favor tentar novamente mais tarde.');
		}else{
			if($this->db->affected_rows() > 0){
				return $this->db->insert_id();
			}
		}
	}
	
	public function alterar($data, $id){
	
		$this->db->where('idVpmFuncionalidade', $id);
		$retorno = $this->db->update('tb_vpmfuncionalidade', $data);
		
		if(!$retorno){
			throw new Exception('Ocorreu um erro ao alterar o Vinculo com a Funcionalidade. Favor tentar novamente mais tarde.');
		}else{
			return true;
		}
	}
	
	public function excluir($id){
	
		$this->db->where('idVpmFuncionalidade', $id);
		$retorno = $this->db->delete('tb_vpmfuncionalidade');
	
		if(!$retorno){
			throw new Exception('Ocorreu um erro ao excluir o Vinculo com a Funcionalidade. Favor tentar novamente mais tarde.');
		}else{
			return true;
		}
	}
	
	public function excluirPorIdVinculoPerfilMenu($id){
	
		$this->db->where('idVinculoPerfilMenu', $id);
		$retorno = $this->db->delete('tb_vpmfuncionalidade');
	
		if(!$retorno){
			throw new Exception('Ocorreu um erro ao excluir o Vinculo com a Funcionalidade. Favor tentar novamente mais tarde.');
		}else{
			return true;
		}
	}
	
	public function excluirPorIdFuncionalidade($id){
	
		$this->db->where('idFuncionalidade', $id);
		$retorno = $this->db->delete('tb_vpmfuncionalidade');
	
		if(!$retorno){
			throw new Exception('Ocorreu um erro ao excluir o Vinculo com a Funcionalidade. Favor tentar novamente mais tarde.');
		}else{
			return true;
		}
	}
	
	public function excluirPorIdPerfil($idPerfil){
	
		$sql = "delete fun from tb_vpmfuncionalidade as fun
				inner join tb_vinculoperfilmenu as vpm on (vpm.idVinculoPerfilMenu = fun.idVinculoPerfilMenu)
				where vpm.idPerfil = " .$idPerfil;
		
		$retorno = $this->db->query($sql);
	
		if(!$retorno){
			throw new Exception('Ocorreu um erro ao excluir o Vinculo com a Funcionalidade. Favor tentar novamente mais tarde.');
		}else{
			return true;
		}
	}
	
	public function excluirPorIdMenu($idMenu){
	
		$sql = "delete vpm from tb_vpmfuncionalidade as vpm
				inner join tb_funcionalidade as fun on (fun.idFuncionalidade = vpm.idFuncionalidade)
				where fun.idMenu = " .$idMenu;
	
		$retorno = $this->db->query($sql);
	
		if(!$retorno){
			throw new Exception('Ocorreu um erro ao excluir o Vinculo com a Funcionalidade. Favor tentar novamente mais tarde.');
		}else{
			return true;
		}
	}
	
	function obter($id){
	
		$sql = "select *
				from tb_vpmfuncionalidade
				where idVpmFuncionalidade = ".$id;
	
		$query = $this->db->query($sql);
	
		if($query->num_rows() > 0){
			$obj = $query->result();
			
			return $obj[0];
		}else{
			return null;
		}
	}
	
	function listaFuncionalidadeVinculadaPerfil ($idFuncionalidade, $idVinculoPerfilMenu){
	
		$sql = "select *
				FROM tb_vpmfuncionalidade
				WHERE 1 = 1
				and idVinculoPerfilMenu = ".$idVinculoPerfilMenu."
				and idFuncionalidade = ".$idFuncionalidade;
	
		$query = $this->db->query($sql);
	
		return $query->result();
	}
	
	function listarVpmFuncionalidadePorIdPerfil($idPerfil){
		
		$sql = "select vpmf.*
				FROM tb_vpmfuncionalidade as vpmf
					inner join tb_vinculoperfilmenu as vpm on (vpm.idVinculoPerfilMenu = vpmf.idVinculoPerfilMenu)
				WHERE 1 = 1
				and vpm.idPerfil = ".$idPerfil;
		
		$query = $this->db->query($sql);
		
		return $query->result();
		
	}
}